package com.itheima.tanhua.api;

import com.itheima.tanhua.enums.CommentType;
import com.itheima.tanhua.mongo.Comment;
import com.itheima.tanhua.vo.PageResult;

import java.util.List;

/**
 * @author Lff
 * @date 2022/3/28
 * 操作 点赞 评论 收藏 api
 */
public interface CommentApi {
    /**
     * 保存动态相关信息
     * 评论 点赞 收藏
     *
     * @param comment
     * @return 评论 点赞 收藏 的数量
     */
    Integer save(Comment comment);

    /**
     * 分页查询
     *
     * @param movementId
     * @param page
     * @param pagesize
     * @return
     */
    List<Comment> findCommentAll(String movementId, CommentType type, Integer page, Integer pagesize);

    /**
     * 判断用户是否已经点赞，收藏
     *
     * @param movementId
     * @param id
     * @param like
     * @return
     */
    boolean hasComment(String movementId, Long id, CommentType like);

    /**
     * 判断用户是否点赞过这条评论
     *
     * @param movementId
     * @param id
     * @return
     */
    boolean hasComment(String movementId, Long id);

    //删除
    Integer delete(Comment comment);

    //修改评论的点赞数
    Integer updateCommentLikeCount(Comment comment);

    /**
     * 保存一条新的评论点赞记录
     *
     * @param commentSave
     */
    void saveComment(Comment commentSave);

    //减少点赞数
    Integer updateCommentLikeCountRm(Comment comment);

    //删除评论点赞记录
    void delComment(Comment commentDel);

    /**
     * 根据commentType查询comment
     *
     * @param page
     * @param pagesize
     * @param type
     * @return
     */
    List<Comment> getCommentList(Integer page, Integer pagesize, int type, Long userId);

    /**
     * 查询指定动态
     * 指定type的
     * 的comment信息
     *
     * @param publishId
     * @param page
     * @param pagesize
     * @param comment
     * @return
     */
    PageResult findCommentByPage(String publishId, Integer page, Integer pagesize, CommentType comment);

    /**
     * 统计评论数量
     * @return
     * @param movementId
     * @param comment
     */
    Long countCommentNum(String movementId, CommentType comment);
}
